#undef  xuser
#define xuser mixc::math_ln::inc
#include"configure/lookup_table.hpp"
#include"define/nan.hpp"
#include"macro/xalign.hpp"
#include"math/literal.hpp"
#include"utils/mfxx.hpp"

namespace mixc::math_ln::inc{
    using namespace literal;
}

namespace mixc::math_ln::origin{
    #if xuse_math_ln_lut6x16
    constexpr xalign(64) f64 lut[][16][2] = {
        {{1.00000000000000000e+00, 0.00000000000000000e+00}, {9.41176470588235294e-01, 6.06246218164348426e-02}, {8.88888888888888889e-01, 1.17783035656383455e-01}, {8.42105263157894737e-01, 1.71850256926659222e-01}, {8.00000000000000000e-01, 2.23143551314209756e-01}, {7.61904761904761905e-01, 2.71933715483641759e-01}, {7.27272727272727273e-01, 3.18453731118534616e-01}, {6.95652173913043478e-01, 3.62905493689368453e-01}, {6.66666666666666667e-01, 4.05465108108164382e-01}, {6.40000000000000000e-01, 4.46287102628419512e-01}, {6.15384615384615385e-01, 4.85507815781700808e-01}, {5.92592592592592593e-01, 5.23248143764547837e-01}, {5.71428571428571429e-01, 5.59615787935422686e-01}, {5.51724137931034483e-01, 5.94707107746692790e-01}, {5.33333333333333333e-01, 6.28608659422374138e-01}, {5.16129032258064516e-01, 6.61398482245365008e-01}, },
        {{1.00000000000000000e+00, 0.00000000000000000e+00}, {9.96108949416342412e-01, 3.89864041565732301e-03}, {9.92248062015503876e-01, 7.78214044205494895e-03}, {9.88416988416988417e-01, 1.16506172199752741e-02}, {9.84615384615384615e-01, 1.55041865359652542e-02}, {9.80842911877394636e-01, 1.93429628431309346e-02}, {9.77099236641221374e-01, 2.31670592815343782e-02}, {9.73384030418250951e-01, 2.69765876982020757e-02}, {9.69696969696969697e-01, 3.07716586667536884e-02}, {9.66037735849056604e-01, 3.45523815066597334e-02}, {9.62406015037593985e-01, 3.83188643021365992e-02}, {9.58801498127340824e-01, 4.20712139206870544e-02}, {9.55223880597014925e-01, 4.58095360312942032e-02}, {9.51672862453531598e-01, 4.95339351222766309e-02}, {9.48148148148148148e-01, 5.32445145188122829e-02}, {9.44649446494464945e-01, 5.69413764001384248e-02}, },
        {{1.00000000000000000e+00, 0.00000000000000000e+00}, {9.99755918965096412e-01, 2.44110827527362709e-04}, {9.99511957052220595e-01, 4.88162079501351189e-04}, {9.99268114174188827e-01, 7.32153784993847474e-04}, {9.99024390243902439e-01, 9.76085973055458896e-04}, {9.98780785174347720e-01, 1.21995867271553884e-03}, {9.98537298878595807e-01, 1.46377191298220746e-03}, {9.98293931269802583e-01, 1.70752572284237239e-03}, {9.98050682261208577e-01, 1.95122013126174944e-03}, {9.97807551766138855e-01, 2.19485516718488321e-03}, {9.97564539698002923e-01, 2.43843085953516774e-03}, {9.97321645970294619e-01, 2.68194723721486712e-03}, {9.97078870496592016e-01, 2.92540432910513605e-03}, {9.96836213190557313e-01, 3.16880216406604040e-03}, {9.96593673965936740e-01, 3.41214077093657772e-03}, {9.96351252736560448e-01, 3.65542017853469778e-03}, },
        {{1.00000000000000000e+00, 0.00000000000000000e+00}, {9.99984741443764591e-01, 1.52586726483623974e-05}, {9.99969483353169154e-01, 3.05171124731863786e-05}, {9.99954225728192374e-01, 4.57753194815768830e-05}, {9.99938968568812939e-01, 6.10332936806385249e-05}, {9.99923711875009536e-01, 7.62910350774755934e-05}, {9.99908455646760856e-01, 9.15485436791920524e-05}, {9.99893199884045588e-01, 1.06805819492891541e-04}, {9.99877944586842426e-01, 1.22062862525677372e-04}, {9.99862689755130063e-01, 1.37319672784652534e-04}, {9.99847435388887194e-01, 1.52576250276919691e-04}, {9.99832181488092514e-01, 1.67832595009581180e-04}, {9.99816928052724721e-01, 1.83088706989739016e-04}, {9.99801675082762514e-01, 1.98344586224494886e-04}, {9.99786422578184592e-01, 2.13600232720950154e-04}, {9.99771170538969657e-01, 2.28855646486205857e-04}, },
        {{1.00000000000000000e+00, 0.00000000000000000e+00}, {9.99999046326593088e-01, 9.53673861659188234e-07}, {9.99998092655005159e-01, 1.90734681382540942e-06}, {9.99997138985236210e-01, 2.86101885650039826e-06}, {9.99996185317286235e-01, 3.81468998968588948e-06}, {9.99995231651155228e-01, 4.76836021338361778e-06}, {9.99994277986843184e-01, 5.72202952759531786e-06}, {9.99993324324350099e-01, 6.67569793232272443e-06}, {9.99992370663675967e-01, 7.62936542756757216e-06}, {9.99991417004820782e-01, 8.58303201333159574e-06}, {9.99990463347784540e-01, 9.53669768961652987e-06}, {9.99989509692567236e-01, 1.04903624564241092e-05}, {9.99988556039168863e-01, 1.14440263137560684e-05}, {9.99987602387589418e-01, 1.23976892616141422e-05}, {9.99986648737828894e-01, 1.33513513000000652e-05}, {9.99985695089887287e-01, 1.43050124289155720e-05}, },
        {{1.00000000000000000e+00, 0.00000000000000000e+00}, {9.99999940395358777e-01, 5.96046429990338562e-08}, {9.99999880790724660e-01, 1.19209282445354457e-07}, {9.99999821186097648e-01, 1.78813918338962226e-07}, {9.99999761581477742e-01, 2.38418550679857587e-07}, {9.99999701976864941e-01, 2.98023179468040963e-07}, {9.99999642372259245e-01, 3.57627804703512778e-07}, {9.99999582767660655e-01, 4.17232426386273455e-07}, {9.99999523163069170e-01, 4.76837044516323418e-07}, {9.99999463558484791e-01, 5.36441659093663091e-07}, {9.99999403953907517e-01, 5.96046270118292896e-07}, {9.99999344349337349e-01, 6.55650877590213258e-07}, {9.99999284744774286e-01, 7.15255481509424599e-07}, {9.99999225140218328e-01, 7.74860081875927344e-07}, {9.99999165535669476e-01, 8.34464678689721916e-07}, {9.99999105931127729e-01, 8.94069271950808738e-07}, },
    };
    constexpr uxx step = 4;
    #elif xuse_math_ln_lut3x256
    constexpr xalign(64) f64 lut[][256][2] = {
        {{1.00000000000000000e+00, 0.00000000000000000e+00}, {9.96108949416342412e-01, 3.89864041565732301e-03}, {9.92248062015503876e-01, 7.78214044205494895e-03}, {9.88416988416988417e-01, 1.16506172199752741e-02}, {9.84615384615384615e-01, 1.55041865359652542e-02}, {9.80842911877394636e-01, 1.93429628431309346e-02}, {9.77099236641221374e-01, 2.31670592815343782e-02}, {9.73384030418250951e-01, 2.69765876982020757e-02}, {9.69696969696969697e-01, 3.07716586667536884e-02}, {9.66037735849056604e-01, 3.45523815066597334e-02}, {9.62406015037593985e-01, 3.83188643021365992e-02}, {9.58801498127340824e-01, 4.20712139206870544e-02}, {9.55223880597014925e-01, 4.58095360312942032e-02}, {9.51672862453531598e-01, 4.95339351222766309e-02}, {9.48148148148148148e-01, 5.32445145188122829e-02}, {9.44649446494464945e-01, 5.69413764001384248e-02}, {9.41176470588235294e-01, 6.06246218164348426e-02}, {9.37728937728937729e-01, 6.42943507053972572e-02}, {9.34306569343065693e-01, 6.79506619085077494e-02}, {9.30909090909090909e-01, 7.15936531870088179e-02}, {9.27536231884057971e-01, 7.52234212375875257e-02}, {9.24187725631768953e-01, 7.88400617077760245e-02}, {9.20863309352517986e-01, 8.24436692110745913e-02}, {9.17562724014336918e-01, 8.60343373418031534e-02}, {9.14285714285714286e-01, 8.96121586896871326e-02}, {9.11032028469750890e-01, 9.31772248541832898e-02}, {9.07801418439716312e-01, 9.67296264585511123e-02}, {9.04593639575971731e-01, 1.00269453163675149e-01}, {9.01408450704225352e-01, 1.03796793681643565e-01}, {8.98245614035087719e-01, 1.07311735789088051e-01}, {8.95104895104895105e-01, 1.10814366340290114e-01}, {8.91986062717770035e-01, 1.14304771280058634e-01}, {8.88888888888888889e-01, 1.17783035656383455e-01}, {8.85813148788927336e-01, 1.21249243632869685e-01}, {8.82758620689655172e-01, 1.24703478500957236e-01}, {8.79725085910652921e-01, 1.28145822691930038e-01}, {8.76712328767123288e-01, 1.31576357788719273e-01}, {8.73720136518771331e-01, 1.34995164537504831e-01}, {8.70748299319727891e-01, 1.38402322859119136e-01}, {8.67796610169491525e-01, 1.41797911860257350e-01}, {8.64864864864864865e-01, 1.45182009844497897e-01}, {8.61952861952861953e-01, 1.48554694323137143e-01}, {8.59060402684563758e-01, 1.51916042025841975e-01}, {8.56187290969899666e-01, 1.55266128911123952e-01}, {8.53333333333333333e-01, 1.58605030176638584e-01}, {8.50498338870431894e-01, 1.61932820269313253e-01}, {8.47682119205298013e-01, 1.65249572895307163e-01}, {8.44884488448844885e-01, 1.68555361029806667e-01}, {8.42105263157894737e-01, 1.71850256926659222e-01}, {8.39344262295081967e-01, 1.75134332127849148e-01}, {8.36601307189542484e-01, 1.78407657472818297e-01}, {8.33876221498371336e-01, 1.81670303107634678e-01}, {8.31168831168831169e-01, 1.84922338494011993e-01}, {8.28478964401294498e-01, 1.88163832418182987e-01}, {8.25806451612903226e-01, 1.91394852999629455e-01}, {8.23151125401929260e-01, 1.94615467699671659e-01}, {8.20512820512820513e-01, 1.97825743329919880e-01}, {8.17891373801916933e-01, 2.01025746060590741e-01}, {8.15286624203821656e-01, 2.04215541428690892e-01}, {8.12698412698412698e-01, 2.07395194346070587e-01}, {8.10126582278481013e-01, 2.10564769107349638e-01}, {8.07570977917981073e-01, 2.13724329397718139e-01}, {8.05031446540880503e-01, 2.16873938300614360e-01}, {8.02507836990595611e-01, 2.20013658305282096e-01}, {8.00000000000000000e-01, 2.23143551314209756e-01}, {7.97507788161993769e-01, 2.26263678650453389e-01}, {7.95031055900621118e-01, 2.29374101064845830e-01}, {7.92569659442724458e-01, 2.32474878743094065e-01}, {7.90123456790123457e-01, 2.35566071312766909e-01}, {7.87692307692307692e-01, 2.38647737850175010e-01}, {7.85276073619631902e-01, 2.41719936887145168e-01}, {7.82874617737003058e-01, 2.44782726417690916e-01}, {7.80487804878048780e-01, 2.47836163904581257e-01}, {7.78115501519756839e-01, 2.50880306285809417e-01}, {7.75757575757575758e-01, 2.53915209980963444e-01}, {7.73413897280966767e-01, 2.56940930897500425e-01}, {7.71084337349397590e-01, 2.59957524436926067e-01}, {7.68768768768768769e-01, 2.62965045500881352e-01}, {7.66467065868263473e-01, 2.65963548497137941e-01}, {7.64179104477611940e-01, 2.68953087345503959e-01}, {7.61904761904761905e-01, 2.71933715483641759e-01}, {7.59643916913946588e-01, 2.74905485872799249e-01}, {7.57396449704142012e-01, 2.77868451003456306e-01}, {7.55162241887905605e-01, 2.80822662900887785e-01}, {7.52941176470588235e-01, 2.83768173130644598e-01}, {7.50733137829912023e-01, 2.86705032803954315e-01}, {7.48538011695906433e-01, 2.89633292583042677e-01}, {7.46355685131195335e-01, 2.92553002686377440e-01}, {7.44186046511627907e-01, 2.95464212893835876e-01}, {7.42028985507246377e-01, 2.98366972551797281e-01}, {7.39884393063583815e-01, 3.01261330578161781e-01}, {7.37752161383285303e-01, 3.04147335467296717e-01}, {7.35632183908045977e-01, 3.07025035294911862e-01}, {7.33524355300859599e-01, 3.09894477722864688e-01}, {7.31428571428571429e-01, 3.12755710003896888e-01}, {7.29344729344729345e-01, 3.15608778986303335e-01}, {7.27272727272727273e-01, 3.18453731118534616e-01}, {7.25212464589235127e-01, 3.21290612453734292e-01}, {7.23163841807909605e-01, 3.24119468654211976e-01}, {7.21126760563380282e-01, 3.26940344995853321e-01}, {7.19101123595505618e-01, 3.29753286372467982e-01}, {7.17086834733893557e-01, 3.32558337300076601e-01}, {7.15083798882681564e-01, 3.35355541921137830e-01}, {7.13091922005571031e-01, 3.38144944008716398e-01}, {7.11111111111111111e-01, 3.40926586970593210e-01}, {7.09141274238227147e-01, 3.43700513853318445e-01}, {7.07182320441988950e-01, 3.46466767346208581e-01}, {7.05234159779614325e-01, 3.49225389785288304e-01}, {7.03296703296703297e-01, 3.51976423157178185e-01}, {7.01369863013698630e-01, 3.54719909102929028e-01}, {6.99453551912568306e-01, 3.57455888921803774e-01}, {6.97547683923705722e-01, 3.60184403575007796e-01}, {6.95652173913043478e-01, 3.62905493689368453e-01}, {6.93766937669376694e-01, 3.65619199560964711e-01}, {6.91891891891891892e-01, 3.68325561158707653e-01}, {6.90026954177897574e-01, 3.71024618127872664e-01}, {6.88172043010752688e-01, 3.73716409793584081e-01}, {6.86327077747989276e-01, 3.76400975164253066e-01}, {6.84491978609625668e-01, 3.79078352934969458e-01}, {6.82666666666666667e-01, 3.81748581490848340e-01}, {6.80851063829787234e-01, 3.84411698910332040e-01}, {6.79045092838196286e-01, 3.87067742968448288e-01}, {6.77248677248677249e-01, 3.89716751140025213e-01}, {6.75461741424802111e-01, 3.92358760602863872e-01}, {6.73684210526315789e-01, 3.94993808240868978e-01}, {6.71916010498687664e-01, 3.97621930647138489e-01}, {6.70157068062827225e-01, 4.00243164127012707e-01}, {6.68407310704960836e-01, 4.02857544701083515e-01}, {6.66666666666666667e-01, 4.05465108108164382e-01}, {6.64935064935064935e-01, 4.08065889808221748e-01}, {6.63212435233160622e-01, 4.10659924985268386e-01}, {6.61498708010335917e-01, 4.13247248550219331e-01}, {6.59793814432989691e-01, 4.15827895143710966e-01}, {6.58097686375321337e-01, 4.18401899138883818e-01}, {6.56410256410256410e-01, 4.20969294644129636e-01}, {6.54731457800511509e-01, 4.23530115505803296e-01}, {6.53061224489795918e-01, 4.26084395310900063e-01}, {6.51399491094147583e-01, 4.28632167389698760e-01}, {6.49746192893401015e-01, 4.31173464818371341e-01}, {6.48101265822784810e-01, 4.33708320421559393e-01}, {6.46464646464646465e-01, 4.36236766774918070e-01}, {6.44836272040302267e-01, 4.38758836207627938e-01}, {6.43216080402010050e-01, 4.41274560804875229e-01}, {6.41604010025062657e-01, 4.43783972410300981e-01}, {6.40000000000000000e-01, 4.46287102628419512e-01}, {6.38403990024937656e-01, 4.48783982827006711e-01}, {6.36815920398009950e-01, 4.51274644139458585e-01}, {6.35235732009925558e-01, 4.53759117467120507e-01}, {6.33663366336633663e-01, 4.56237433481587594e-01}, {6.32098765432098765e-01, 4.58709622626976665e-01}, {6.30541871921182266e-01, 4.61175715122170166e-01}, {6.28992628992628993e-01, 4.63635740963032513e-01}, {6.27450980392156863e-01, 4.66089729924599225e-01}, {6.25916870415647922e-01, 4.68537711563239270e-01}, {6.24390243902439024e-01, 4.70979715218791013e-01}, {6.22871046228710462e-01, 4.73415770016672131e-01}, {6.21359223300970874e-01, 4.75845904869963914e-01}, {6.19854721549636804e-01, 4.78270148481470280e-01}, {6.18357487922705314e-01, 4.80688529345751908e-01}, {6.16867469879518072e-01, 4.83101075751135823e-01}, {6.15384615384615385e-01, 4.85507815781700808e-01}, {6.13908872901678657e-01, 4.87908777319238973e-01}, {6.12440191387559809e-01, 4.90303988045193838e-01}, {6.10978520286396181e-01, 4.92693475442575256e-01}, {6.09523809523809524e-01, 4.95077266797851515e-01}, {6.08076009501187648e-01, 4.97455389202818942e-01}, {6.06635071090047393e-01, 4.99827869556449330e-01}, {6.05200945626477541e-01, 5.02194734566715494e-01}, {6.03773584905660377e-01, 5.04556010752395287e-01}, {6.02352941176470588e-01, 5.06911724444854354e-01}, {6.00938967136150235e-01, 5.09261901789807947e-01}, {5.99531615925058548e-01, 5.11606568749062079e-01}, {5.98130841121495327e-01, 5.13945751102234317e-01}, {5.96736596736596737e-01, 5.16279474448454496e-01}, {5.95348837209302326e-01, 5.18607764208045632e-01}, {5.93967517401392111e-01, 5.20930645624185312e-01}, {5.92592592592592593e-01, 5.23248143764547837e-01}, {5.91224018475750577e-01, 5.25560283522927371e-01}, {5.89861751152073733e-01, 5.27867089620842385e-01}, {5.88505747126436782e-01, 5.30168586609121618e-01}, {5.87155963302752294e-01, 5.32464798869471844e-01}, {5.85812356979405034e-01, 5.34755750616027676e-01}, {5.84474885844748858e-01, 5.37041465896883655e-01}, {5.83143507972665148e-01, 5.39321968595608875e-01}, {5.81818181818181818e-01, 5.41597282432744372e-01}, {5.80498866213151927e-01, 5.43867430967283518e-01}, {5.79185520361990950e-01, 5.46132437598135650e-01}, {5.77878103837471783e-01, 5.48392325565573163e-01}, {5.76576576576576577e-01, 5.50647117952662279e-01}, {5.75280898876404494e-01, 5.52896837686677738e-01}, {5.73991031390134529e-01, 5.55141507540501593e-01}, {5.72706935123042506e-01, 5.57381150134006357e-01}, {5.71428571428571429e-01, 5.59615787935422686e-01}, {5.70155902004454343e-01, 5.61845443262691818e-01}, {5.68888888888888889e-01, 5.64070138284802966e-01}, {5.67627494456762749e-01, 5.66289895023115873e-01}, {5.66371681415929204e-01, 5.68504735352668712e-01}, {5.65121412803532009e-01, 5.70714681003471545e-01}, {5.63876651982378855e-01, 5.72919753561785509e-01}, {5.62637362637362637e-01, 5.75119974471387940e-01}, {5.61403508771929825e-01, 5.77315365034823604e-01}, {5.60175054704595186e-01, 5.79505946414642224e-01}, {5.58951965065502183e-01, 5.81691739634622483e-01}, {5.57734204793028322e-01, 5.83872765580982679e-01}, {5.56521739130434783e-01, 5.86049045003578209e-01}, {5.55314533622559653e-01, 5.88220598517086043e-01}, {5.54112554112554113e-01, 5.90387446602176375e-01}, {5.52915766738660907e-01, 5.92549609606671599e-01}, {5.51724137931034483e-01, 5.94707107746692790e-01}, {5.50537634408602151e-01, 5.96859961107793837e-01}, {5.49356223175965665e-01, 5.99008189646083399e-01}, {5.48179871520342612e-01, 6.01151813189334836e-01}, {5.47008547008547009e-01, 6.03290851438084262e-01}, {5.45842217484008529e-01, 6.05425323966716889e-01}, {5.44680851063829787e-01, 6.07555250224541796e-01}, {5.43524416135881104e-01, 6.09680649536855273e-01}, {5.42372881355932203e-01, 6.11801541105992904e-01}, {5.41226215644820296e-01, 6.13917944012370492e-01}, {5.40084388185654008e-01, 6.16029877215514020e-01}, {5.38947368421052632e-01, 6.18137359555078734e-01}, {5.37815126050420168e-01, 6.20240409751857529e-01}, {5.36687631027253669e-01, 6.22339046408778742e-01}, {5.35564853556485356e-01, 6.24433288011893501e-01}, {5.34446764091858038e-01, 6.26523152931352760e-01}, {5.33333333333333333e-01, 6.28608659422374138e-01}, {5.32224532224532225e-01, 6.30689825626198705e-01}, {5.31120331950207469e-01, 6.32766669571037830e-01}, {5.30020703933747412e-01, 6.34839209173010212e-01}, {5.28925619834710744e-01, 6.36907462237069232e-01}, {5.27835051546391753e-01, 6.38971446457920721e-01}, {5.26748971193415638e-01, 6.41031179420931291e-01}, {5.25667351129363450e-01, 6.43086678603027315e-01}, {5.24590163934426229e-01, 6.45137961373584702e-01}, {5.23517382413087935e-01, 6.47185044995309550e-01}, {5.22448979591836735e-01, 6.49227946625109819e-01}, {5.21384928716904277e-01, 6.51266683314958103e-01}, {5.20325203252032520e-01, 6.53301272012745639e-01}, {5.19269776876267748e-01, 6.55331729563127632e-01}, {5.18218623481781377e-01, 6.57358072708360030e-01}, {5.17171717171717172e-01, 6.59380318089127826e-01}, {5.16129032258064516e-01, 6.61398482245365008e-01}, {5.15090543259557344e-01, 6.63412581617066251e-01}, {5.14056224899598394e-01, 6.65422632545090449e-01}, {5.13026052104208417e-01, 6.67428651271956190e-01}, {5.12000000000000000e-01, 6.69430653942629267e-01}, {5.10978043912175649e-01, 6.71428656605302323e-01}, {5.09960159362549801e-01, 6.73422675212166720e-01}, {5.08946322067594433e-01, 6.75412725620176731e-01}, {5.07936507936507937e-01, 6.77398823591806141e-01}, {5.06930693069306931e-01, 6.79380984795797350e-01}, {5.05928853754940711e-01, 6.81359224807903069e-01}, {5.04930966469428008e-01, 6.83333559111620688e-01}, {5.03937007874015748e-01, 6.85304003098919417e-01}, {5.02946954813359528e-01, 6.87270572070960268e-01}, {5.01960784313725490e-01, 6.89233281238808980e-01}, {5.00978473581213307e-01, 6.91192145724141959e-01}, },
        {{1.00000000000000000e+00, 0.00000000000000000e+00}, {9.99984741443764591e-01, 1.52586726483623974e-05}, {9.99969483353169154e-01, 3.05171124731863786e-05}, {9.99954225728192374e-01, 4.57753194815768830e-05}, {9.99938968568812939e-01, 6.10332936806385249e-05}, {9.99923711875009536e-01, 7.62910350774755934e-05}, {9.99908455646760856e-01, 9.15485436791920524e-05}, {9.99893199884045588e-01, 1.06805819492891541e-04}, {9.99877944586842426e-01, 1.22062862525677372e-04}, {9.99862689755130063e-01, 1.37319672784652534e-04}, {9.99847435388887194e-01, 1.52576250276919691e-04}, {9.99832181488092514e-01, 1.67832595009581180e-04}, {9.99816928052724721e-01, 1.83088706989739016e-04}, {9.99801675082762514e-01, 1.98344586224494886e-04}, {9.99786422578184592e-01, 2.13600232720950154e-04}, {9.99771170538969657e-01, 2.28855646486205857e-04}, {9.99755918965096412e-01, 2.44110827527362709e-04}, {9.99740667856543560e-01, 2.59365775851521098e-04}, {9.99725417213289807e-01, 2.74620491465781087e-04}, {9.99710167035313859e-01, 2.89874974377242415e-04}, {9.99694917322594423e-01, 3.05129224593004494e-04}, {9.99679668075110209e-01, 3.20383242120166415e-04}, {9.99664419292839928e-01, 3.35637026965826939e-04}, {9.99649170975762290e-01, 3.50890579137084507e-04}, {9.99633923123856010e-01, 3.66143898641037231e-04}, {9.99618675737099800e-01, 3.81396985484782902e-04}, {9.99603428815472377e-01, 3.96649839675418984e-04}, {9.99588182358952458e-01, 4.11902461220042616e-04}, {9.99572936367518760e-01, 4.27154850125750613e-04}, {9.99557690841150004e-01, 4.42407006399639466e-04}, {9.99542445779824909e-01, 4.57658930048805339e-04}, {9.99527201183522199e-01, 4.72910621080344075e-04}, {9.99511957052220595e-01, 4.88162079501351189e-04}, {9.99496713385898824e-01, 5.03413305318921871e-04}, {9.99481470184535611e-01, 5.18664298540150991e-04}, {9.99466227448109683e-01, 5.33915059172133088e-04}, {9.99450985176599768e-01, 5.49165587221962382e-04}, {9.99435743369984597e-01, 5.64415882696732766e-04}, {9.99420502028242901e-01, 5.79665945603537807e-04}, {9.99405261151353412e-01, 5.94915775949470750e-04}, {9.99390020739294864e-01, 6.10165373741624515e-04}, {9.99374780792045992e-01, 6.25414738987091696e-04}, {9.99359541309585532e-01, 6.40663871692964564e-04}, {9.99344302291892222e-01, 6.55912771866335065e-04}, {9.99329063738944800e-01, 6.71161439514294821e-04}, {9.99313825650722008e-01, 6.86409874643935129e-04}, {9.99298588027202586e-01, 7.01658077262346962e-04}, {9.99283350868365278e-01, 7.16906047376620969e-04}, {9.99268114174188827e-01, 7.32153784993847474e-04}, {9.99252877944651978e-01, 7.47401290121116476e-04}, {9.99237642179733480e-01, 7.62648562765517651e-04}, {9.99222406879412079e-01, 7.77895602934140350e-04}, {9.99207172043666524e-01, 7.93142410634073601e-04}, {9.99191937672475568e-01, 8.08388985872406106e-04}, {9.99176703765817960e-01, 8.23635328656226244e-04}, {9.99161470323672455e-01, 8.38881438992622068e-04}, {9.99146237346017807e-01, 8.54127316888681310e-04}, {9.99131004832832772e-01, 8.69372962351491374e-04}, {9.99115772784096106e-01, 8.84618375388139343e-04}, {9.99100541199786569e-01, 8.99863556005711974e-04}, {9.99085310079882920e-01, 9.15108504211295701e-04}, {9.99070079424363919e-01, 9.30353220011976634e-04}, {9.99054849233208330e-01, 9.45597703414840557e-04}, {9.99039619506394915e-01, 9.60841954426972932e-04}, {9.99024390243902439e-01, 9.76085973055458896e-04}, {9.99009161445709669e-01, 9.91329759307383263e-04}, {9.98993933111795372e-01, 1.00657331318983052e-03}, {9.98978705242138317e-01, 1.02181663470988484e-03}, {9.98963477836717273e-01, 1.03705972387463005e-03}, {9.98948250895511013e-01, 1.05230258069114968e-03}, {9.98933024418498308e-01, 1.06754520516652692e-03}, {9.98917798405657933e-01, 1.08278759730784464e-03}, {9.98902572856968662e-01, 1.09802975712218538e-03}, {9.98887347772409273e-01, 1.11327168461663137e-03}, {9.98872123151958543e-01, 1.12851337979826450e-03}, {9.98856898995595251e-01, 1.14375484267416636e-03}, {9.98841675303298177e-01, 1.15899607325141818e-03}, {9.98826452075046104e-01, 1.17423707153710090e-03}, {9.98811229310817813e-01, 1.18947783753829511e-03}, {9.98796007010592090e-01, 1.20471837126208111e-03}, {9.98780785174347720e-01, 1.21995867271553884e-03}, {9.98765563802063490e-01, 1.23519874190574793e-03}, {9.98750342893718187e-01, 1.25043857883978770e-03}, {9.98735122449290602e-01, 1.26567818352473712e-03}, {9.98719902468759525e-01, 1.28091755596767486e-03}, {9.98704682952103747e-01, 1.29615669617567926e-03}, {9.98689463899302063e-01, 1.31139560415582833e-03}, {9.98674245310333267e-01, 1.32663427991519976e-03}, {9.98659027185176155e-01, 1.34187272346087091e-03}, {9.98643809523809524e-01, 1.35711093479991883e-03}, {9.98628592326212172e-01, 1.37234891393942024e-03}, {9.98613375592362899e-01, 1.38758666088645153e-03}, {9.98598159322240507e-01, 1.40282417564808878e-03}, {9.98582943515823797e-01, 1.41806145823140773e-03}, {9.98567728173091574e-01, 1.43329850864348381e-03}, {9.98552513294022642e-01, 1.44853532689139213e-03}, {9.98537298878595807e-01, 1.46377191298220746e-03}, {9.98522084926789877e-01, 1.47900826692300425e-03}, {9.98506871438583661e-01, 1.49424438872085664e-03}, {9.98491658413955969e-01, 1.50948027838283844e-03}, {9.98476445852885612e-01, 1.52471593591602313e-03}, {9.98461233755351402e-01, 1.53995136132748388e-03}, {9.98446022121332155e-01, 1.55518655462429351e-03}, {9.98430810950806685e-01, 1.57042151581352456e-03}, {9.98415600243753809e-01, 1.58565624490224920e-03}, {9.98400390000152344e-01, 1.60089074189753932e-03}, {9.98385180219981110e-01, 1.61612500680646645e-03}, {9.98369970903218927e-01, 1.63135903963610182e-03}, {9.98354762049844616e-01, 1.64659284039351632e-03}, {9.98339553659837002e-01, 1.66182640908578054e-03}, {9.98324345733174908e-01, 1.67705974571996473e-03}, {9.98309138269837159e-01, 1.69229285030313881e-03}, {9.98293931269802583e-01, 1.70752572284237239e-03}, {9.98278724733050008e-01, 1.72275836334473476e-03}, {9.98263518659558264e-01, 1.73799077181729488e-03}, {9.98248313049306180e-01, 1.75322294826712139e-03}, {9.98233107902272589e-01, 1.76845489270128259e-03}, {9.98217903218436324e-01, 1.78368660512684649e-03}, {9.98202698997776221e-01, 1.79891808555088075e-03}, {9.98187495240271114e-01, 1.81414933398045271e-03}, {9.98172291945899842e-01, 1.82938035042262941e-03}, {9.98157089114641242e-01, 1.84461113488447753e-03}, {9.98141886746474154e-01, 1.85984168737306346e-03}, {9.98126684841377420e-01, 1.87507200789545325e-03}, {9.98111483399329881e-01, 1.89030209645871264e-03}, {9.98096282420310382e-01, 1.90553195306990703e-03}, {9.98081081904297767e-01, 1.92076157773610150e-03}, {9.98065881851270883e-01, 1.93599097046436083e-03}, {9.98050682261208577e-01, 1.95122013126174944e-03}, {9.98035483134089698e-01, 1.96644906013533146e-03}, {9.98020284469893095e-01, 1.98167775709217069e-03}, {9.98005086268597621e-01, 1.99690622213933059e-03}, {9.97989888530182128e-01, 2.01213445528387431e-03}, {9.97974691254625470e-01, 2.02736245653286468e-03}, {9.97959494441906502e-01, 2.04259022589336421e-03}, {9.97944298092004081e-01, 2.05781776337243507e-03}, {9.97929102204897064e-01, 2.07304506897713913e-03}, {9.97913906780564311e-01, 2.08827214271453792e-03}, {9.97898711818984682e-01, 2.10349898459169265e-03}, {9.97883517320137038e-01, 2.11872559461566422e-03}, {9.97868323284000244e-01, 2.13395197279351320e-03}, {9.97853129710553162e-01, 2.14917811913229982e-03}, {9.97837936599774658e-01, 2.16440403363908402e-03}, {9.97822743951643600e-01, 2.17962971632092539e-03}, {9.97807551766138855e-01, 2.19485516718488321e-03}, {9.97792360043239293e-01, 2.21008038623801644e-03}, {9.97777168782923784e-01, 2.22530537348738372e-03}, {9.97761977985171201e-01, 2.24053012894004335e-03}, {9.97746787649960417e-01, 2.25575465260305332e-03}, {9.97731597777270305e-01, 2.27097894448347130e-03}, {9.97716408367079743e-01, 2.28620300458835464e-03}, {9.97701219419367607e-01, 2.30142683292476035e-03}, {9.97686030934112776e-01, 2.31665042949974513e-03}, {9.97670842911294128e-01, 2.33187379432036537e-03}, {9.97655655350890547e-01, 2.34709692739367712e-03}, {9.97640468252880912e-01, 2.36231982872673611e-03}, {9.97625281617244109e-01, 2.37754249832659774e-03}, {9.97610095443959022e-01, 2.39276493620031712e-03}, {9.97594909733004536e-01, 2.40798714235494900e-03}, {9.97579724484359540e-01, 2.42320911679754784e-03}, {9.97564539698002923e-01, 2.43843085953516774e-03}, {9.97549355373913573e-01, 2.45365237057486252e-03}, {9.97534171512070383e-01, 2.46887364992368564e-03}, {9.97518988112452244e-01, 2.48409469758869027e-03}, {9.97503805175038052e-01, 2.49931551357692924e-03}, {9.97488622699806700e-01, 2.51453609789545506e-03}, {9.97473440686737086e-01, 2.52975645055131992e-03}, {9.97458259135808106e-01, 2.54497657155157568e-03}, {9.97443078046998661e-01, 2.56019646090327390e-03}, {9.97427897420287649e-01, 2.57541611861346579e-03}, {9.97412717255653974e-01, 2.59063554468920226e-03}, {9.97397537553076537e-01, 2.60585473913753389e-03}, {9.97382358312534242e-01, 2.62107370196551093e-03}, {9.97367179534005996e-01, 2.63629243318018332e-03}, {9.97352001217470705e-01, 2.65151093278860067e-03}, {9.97336823362907276e-01, 2.66672920079781229e-03}, {9.97321645970294619e-01, 2.68194723721486712e-03}, {9.97306469039611645e-01, 2.69716504204681384e-03}, {9.97291292570837265e-01, 2.71238261530070076e-03}, {9.97276116563950392e-01, 2.72759995698357588e-03}, {9.97260941018929941e-01, 2.74281706710248689e-03}, {9.97245765935754828e-01, 2.75803394566448116e-03}, {9.97230591314403968e-01, 2.77325059267660571e-03}, {9.97215417154856282e-01, 2.78846700814590728e-03}, {9.97200243457090688e-01, 2.80368319207943225e-03}, {9.97185070221086106e-01, 2.81889914448422670e-03}, {9.97169897446821460e-01, 2.83411486536733639e-03}, {9.97154725134275672e-01, 2.84933035473580674e-03}, {9.97139553283427667e-01, 2.86454561259668286e-03}, {9.97124381894256371e-01, 2.87976063895700955e-03}, {9.97109210966740711e-01, 2.89497543382383127e-03}, {9.97094040500859616e-01, 2.91018999720419216e-03}, {9.97078870496592016e-01, 2.92540432910513605e-03}, {9.97063700953916840e-01, 2.94061842953370645e-03}, {9.97048531872813023e-01, 2.95583229849694652e-03}, {9.97033363253259497e-01, 2.97104593600189914e-03}, {9.97018195095235197e-01, 2.98625934205560683e-03}, {9.97003027398719060e-01, 3.00147251666511182e-03}, {9.96987860163690023e-01, 3.01668545983745600e-03}, {9.96972693390127025e-01, 3.03189817157968094e-03}, {9.96957527078009006e-01, 3.04711065189882790e-03}, {9.96942361227314906e-01, 3.06232290080193781e-03}, {9.96927195838023670e-01, 3.07753491829605127e-03}, {9.96912030910114240e-01, 3.09274670438820858e-03}, {9.96896866443565561e-01, 3.10795825908544970e-03}, {9.96881702438356581e-01, 3.12316958239481428e-03}, {9.96866538894466247e-01, 3.13838067432334164e-03}, {9.96851375811873507e-01, 3.15359153487807079e-03}, {9.96836213190557313e-01, 3.16880216406604040e-03}, {9.96821051030496616e-01, 3.18401256189428884e-03}, {9.96805889331670368e-01, 3.19922272836985415e-03}, {9.96790728094057524e-01, 3.21443266349977405e-03}, {9.96775567317637038e-01, 3.22964236729108593e-03}, {9.96760407002387869e-01, 3.24485183975082687e-03}, {9.96745247148288973e-01, 3.26006108088603363e-03}, {9.96730087755319311e-01, 3.27527009070374264e-03}, {9.96714928823457842e-01, 3.29047886921099001e-03}, {9.96699770352683528e-01, 3.30568741641481154e-03}, {9.96684612342975332e-01, 3.32089573232224269e-03}, {9.96669454794312220e-01, 3.33610381694031862e-03}, {9.96654297706673155e-01, 3.35131167027607416e-03}, {9.96639141080037106e-01, 3.36651929233654381e-03}, {9.96623984914383041e-01, 3.38172668312876177e-03}, {9.96608829209689928e-01, 3.39693384265976189e-03}, {9.96593673965936740e-01, 3.41214077093657772e-03}, {9.96578519183102447e-01, 3.42734746796624249e-03}, {9.96563364861166023e-01, 3.44255393375578911e-03}, {9.96548211000106443e-01, 3.45776016831225015e-03}, {9.96533057599902682e-01, 3.47296617164265788e-03}, {9.96517904660533719e-01, 3.48817194375404423e-03}, {9.96502752181978530e-01, 3.50337748465344084e-03}, {9.96487600164216096e-01, 3.51858279434787899e-03}, {9.96472448607225398e-01, 3.53378787284438967e-03}, {9.96457297510985419e-01, 3.54899272015000354e-03}, {9.96442146875475141e-01, 3.56419733627175093e-03}, {9.96426996700673549e-01, 3.57940172121666186e-03}, {9.96411846986559630e-01, 3.59460587499176603e-03}, {9.96396697733112371e-01, 3.60980979760409281e-03}, {9.96381548940310761e-01, 3.62501348906067126e-03}, {9.96366400608133789e-01, 3.64021694936853011e-03}, {9.96351252736560448e-01, 3.65542017853469778e-03}, {9.96336105325569728e-01, 3.67062317656620236e-03}, {9.96320958375140625e-01, 3.68582594347007162e-03}, {9.96305811885252132e-01, 3.70102847925333302e-03}, {9.96290665855883247e-01, 3.71623078392301368e-03}, {9.96275520287012967e-01, 3.73143285748614042e-03}, {9.96260375178620291e-01, 3.74663469994973973e-03}, {9.96245230530684219e-01, 3.76183631132083778e-03}, {9.96230086343183753e-01, 3.77703769160646042e-03}, {9.96214942616097895e-01, 3.79223884081363318e-03}, {9.96199799349405649e-01, 3.80743975894938126e-03}, {9.96184656543086020e-01, 3.82264044602072956e-03}, {9.96169514197118015e-01, 3.83784090203470265e-03}, {9.96154372311480643e-01, 3.85304112699832477e-03}, {9.96139230886152911e-01, 3.86824112091861986e-03}, {9.96124089921113830e-01, 3.88344088380261151e-03}, },
        {{1.00000000000000000e+00, 0.00000000000000000e+00}, {9.99999940395358777e-01, 5.96046429990338562e-08}, {9.99999880790724660e-01, 1.19209282445354457e-07}, {9.99999821186097648e-01, 1.78813918338962226e-07}, {9.99999761581477742e-01, 2.38418550679857587e-07}, {9.99999701976864941e-01, 2.98023179468040963e-07}, {9.99999642372259245e-01, 3.57627804703512778e-07}, {9.99999582767660655e-01, 4.17232426386273455e-07}, {9.99999523163069170e-01, 4.76837044516323418e-07}, {9.99999463558484791e-01, 5.36441659093663091e-07}, {9.99999403953907517e-01, 5.96046270118292896e-07}, {9.99999344349337349e-01, 6.55650877590213258e-07}, {9.99999284744774286e-01, 7.15255481509424599e-07}, {9.99999225140218328e-01, 7.74860081875927344e-07}, {9.99999165535669476e-01, 8.34464678689721916e-07}, {9.99999105931127729e-01, 8.94069271950808738e-07}, {9.99999046326593088e-01, 9.53673861659188234e-07}, {9.99998986722065552e-01, 1.01327844781486083e-06}, {9.99998927117545121e-01, 1.07288303041782694e-06}, {9.99998867513031796e-01, 1.13248760946808700e-06}, {9.99998807908525576e-01, 1.19209218496564143e-06}, {9.99998748304026462e-01, 1.25169675691049065e-06}, {9.99998688699534453e-01, 1.31130132530263508e-06}, {9.99998629095049549e-01, 1.37090589014207515e-06}, {9.99998569490571751e-01, 1.43051045142881129e-06}, {9.99998509886101058e-01, 1.49011500916284391e-06}, {9.99998450281637471e-01, 1.54971956334417343e-06}, {9.99998390677180989e-01, 1.60932411397280030e-06}, {9.99998331072731612e-01, 1.66892866104872491e-06}, {9.99998271468289341e-01, 1.72853320457194771e-06}, {9.99998211863854175e-01, 1.78813774454246911e-06}, {9.99998152259426114e-01, 1.84774228096028954e-06}, {9.99998092655005159e-01, 1.90734681382540942e-06}, {9.99998033050591310e-01, 1.96695134313782917e-06}, {9.99997973446184565e-01, 2.02655586889754921e-06}, {9.99997913841784927e-01, 2.08616039110456998e-06}, {9.99997854237392393e-01, 2.14576490975889190e-06}, {9.99997794633006965e-01, 2.20536942486051538e-06}, {9.99997735028628642e-01, 2.26497393640944085e-06}, {9.99997675424257425e-01, 2.32457844440566874e-06}, {9.99997615819893313e-01, 2.38418294884919946e-06}, {9.99997556215536306e-01, 2.44378744974003345e-06}, {9.99997496611186405e-01, 2.50339194707817112e-06}, {9.99997437006843609e-01, 2.56299644086361290e-06}, {9.99997377402507918e-01, 2.62260093109635921e-06}, {9.99997317798179333e-01, 2.68220541777641048e-06}, {9.99997258193857854e-01, 2.74180990090376713e-06}, {9.99997198589543479e-01, 2.80141438047842958e-06}, {9.99997138985236210e-01, 2.86101885650039826e-06}, {9.99997079380936046e-01, 2.92062332896967359e-06}, {9.99997019776642988e-01, 2.98022779788625599e-06}, {9.99996960172357035e-01, 3.03983226325014589e-06}, {9.99996900568078188e-01, 3.09943672506134371e-06}, {9.99996840963806445e-01, 3.15904118331984987e-06}, {9.99996781359541809e-01, 3.21864563802566480e-06}, {9.99996721755284277e-01, 3.27825008917878892e-06}, {9.99996662151033851e-01, 3.33785453677922265e-06}, {9.99996602546790530e-01, 3.39745898082696643e-06}, {9.99996542942554315e-01, 3.45706342132202066e-06}, {9.99996483338325205e-01, 3.51666785826438578e-06}, {9.99996423734103200e-01, 3.57627229165406221e-06}, {9.99996364129888301e-01, 3.63587672149105037e-06}, {9.99996304525680507e-01, 3.69548114777535069e-06}, {9.99996244921479818e-01, 3.75508557050696358e-06}, {9.99996185317286235e-01, 3.81468998968588948e-06}, {9.99996125713099757e-01, 3.87429440531212880e-06}, {9.99996066108920384e-01, 3.93389881738568198e-06}, {9.99996006504748117e-01, 3.99350322590654942e-06}, {9.99995946900582955e-01, 4.05310763087473157e-06}, {9.99995887296424898e-01, 4.11271203229022883e-06}, {9.99995827692273947e-01, 4.17231643015304164e-06}, {9.99995768088130101e-01, 4.23192082446317041e-06}, {9.99995708483993361e-01, 4.29152521522061558e-06}, {9.99995648879863725e-01, 4.35112960242537756e-06}, {9.99995589275741195e-01, 4.41073398607745677e-06}, {9.99995529671625771e-01, 4.47033836617685365e-06}, {9.99995470067517452e-01, 4.52994274272356861e-06}, {9.99995410463416238e-01, 4.58954711571760208e-06}, {9.99995350859322129e-01, 4.64915148515895449e-06}, {9.99995291255235126e-01, 4.70875585104762625e-06}, {9.99995231651155228e-01, 4.76836021338361778e-06}, {9.99995172047082435e-01, 4.82796457216692952e-06}, {9.99995112443016748e-01, 4.88756892739756189e-06}, {9.99995052838958166e-01, 4.94717327907551530e-06}, {9.99994993234906689e-01, 5.00677762720079019e-06}, {9.99994933630862318e-01, 5.06638197177338697e-06}, {9.99994874026825052e-01, 5.12598631279330607e-06}, {9.99994814422794891e-01, 5.18559065026054792e-06}, {9.99994754818771836e-01, 5.24519498417511293e-06}, {9.99994695214755886e-01, 5.30479931453700154e-06}, {9.99994635610747041e-01, 5.36440364134621415e-06}, {9.99994576006745302e-01, 5.42400796460275121e-06}, {9.99994516402750668e-01, 5.48361228430661312e-06}, {9.99994456798763139e-01, 5.54321660045780032e-06}, {9.99994397194782715e-01, 5.60282091305631323e-06}, {9.99994337590809397e-01, 5.66242522210215227e-06}, {9.99994277986843184e-01, 5.72202952759531786e-06}, {9.99994218382884077e-01, 5.78163382953581044e-06}, {9.99994158778932075e-01, 5.84123812792363041e-06}, {9.99994099174987178e-01, 5.90084242275877821e-06}, {9.99994039571049386e-01, 5.96044671404125426e-06}, {9.99993979967118700e-01, 6.02005100177105898e-06}, {9.99993920363195119e-01, 6.07965528594819280e-06}, {9.99993860759278643e-01, 6.13925956657265614e-06}, {9.99993801155369272e-01, 6.19886384364444942e-06}, {9.99993741551467007e-01, 6.25846811716357306e-06}, {9.99993681947571847e-01, 6.31807238713002750e-06}, {9.99993622343683793e-01, 6.37767665354381315e-06}, {9.99993562739802843e-01, 6.43728091640493044e-06}, {9.99993503135928999e-01, 6.49688517571337978e-06}, {9.99993443532062261e-01, 6.55648943146916162e-06}, {9.99993383928202627e-01, 6.61609368367227636e-06}, {9.99993324324350099e-01, 6.67569793232272443e-06}, {9.99993264720504676e-01, 6.73530217742050625e-06}, {9.99993205116666359e-01, 6.79490641896562225e-06}, {9.99993145512835146e-01, 6.85451065695807286e-06}, {9.99993085909011039e-01, 6.91411489139785849e-06}, {9.99993026305194038e-01, 6.97371912228497957e-06}, {9.99992966701384141e-01, 7.03332334961943652e-06}, {9.99992907097581350e-01, 7.09292757340122976e-06}, {9.99992847493785664e-01, 7.15253179363035973e-06}, {9.99992787889997084e-01, 7.21213601030682683e-06}, {9.99992728286215608e-01, 7.27174022343063151e-06}, {9.99992668682441238e-01, 7.33134443300177417e-06}, {9.99992609078673973e-01, 7.39094863902025525e-06}, {9.99992549474913814e-01, 7.45055284148607516e-06}, {9.99992489871160760e-01, 7.51015704039923433e-06}, {9.99992430267414811e-01, 7.56976123575973319e-06}, {9.99992370663675967e-01, 7.62936542756757216e-06}, {9.99992311059944228e-01, 7.68896961582275165e-06}, {9.99992251456219595e-01, 7.74857380052527210e-06}, {9.99992191852502067e-01, 7.80817798167513393e-06}, {9.99992132248791645e-01, 7.86778215927233755e-06}, {9.99992072645088327e-01, 7.92738633331688341e-06}, {9.99992013041392115e-01, 7.98699050380877191e-06}, {9.99991953437703008e-01, 8.04659467074800348e-06}, {9.99991893834021006e-01, 8.10619883413457855e-06}, {9.99991834230346110e-01, 8.16580299396849754e-06}, {9.99991774626678319e-01, 8.22540715024976087e-06}, {9.99991715023017633e-01, 8.28501130297836896e-06}, {9.99991655419364052e-01, 8.34461545215432224e-06}, {9.99991595815717577e-01, 8.40421959777762114e-06}, {9.99991536212078207e-01, 8.46382373984826607e-06}, {9.99991476608445942e-01, 8.52342787836625747e-06}, {9.99991417004820782e-01, 8.58303201333159574e-06}, {9.99991357401202728e-01, 8.64263614474428132e-06}, {9.99991297797591779e-01, 8.70224027260431464e-06}, {9.99991238193987935e-01, 8.76184439691169611e-06}, {9.99991178590391196e-01, 8.82144851766642615e-06}, {9.99991118986801563e-01, 8.88105263486850519e-06}, {9.99991059383219035e-01, 8.94065674851793366e-06}, {9.99990999779643612e-01, 9.00026085861471198e-06}, {9.99990940176075294e-01, 9.05986496515884057e-06}, {9.99990880572514081e-01, 9.11946906815031985e-06}, {9.99990820968959974e-01, 9.17907316758915025e-06}, {9.99990761365412972e-01, 9.23867726347533220e-06}, {9.99990701761873075e-01, 9.29828135580886611e-06}, {9.99990642158340284e-01, 9.35788544458975240e-06}, {9.99990582554814597e-01, 9.41748952981799151e-06}, {9.99990522951296016e-01, 9.47709361149358386e-06}, {9.99990463347784540e-01, 9.53669768961652987e-06}, {9.99990403744280170e-01, 9.59630176418682995e-06}, {9.99990344140782904e-01, 9.65590583520448455e-06}, {9.99990284537292744e-01, 9.71550990266949407e-06}, {9.99990224933809689e-01, 9.77511396658185895e-06}, {9.99990165330333739e-01, 9.83471802694157960e-06}, {9.99990105726864895e-01, 9.89432208374865646e-06}, {9.99990046123403155e-01, 9.95392613700308994e-06}, {9.99989986519948521e-01, 1.00135301867048805e-05}, {9.99989926916500992e-01, 1.00731342328540285e-05}, {9.99989867313060569e-01, 1.01327382754505344e-05}, {9.99989807709627250e-01, 1.01923423144943986e-05}, {9.99989748106201037e-01, 1.02519463499856215e-05}, {9.99989688502781929e-01, 1.03115503819242036e-05}, {9.99989628899369926e-01, 1.03711544103101453e-05}, {9.99989569295965028e-01, 1.04307584351434471e-05}, {9.99989509692567236e-01, 1.04903624564241092e-05}, {9.99989450089176548e-01, 1.05499664741521322e-05}, {9.99989390485792966e-01, 1.06095704883275165e-05}, {9.99989330882416490e-01, 1.06691744989502625e-05}, {9.99989271279047118e-01, 1.07287785060203706e-05}, {9.99989211675684851e-01, 1.07883825095378413e-05}, {9.99989152072329690e-01, 1.08479865095026750e-05}, {9.99989092468981634e-01, 1.09075905059148720e-05}, {9.99989032865640683e-01, 1.09671944987744329e-05}, {9.99988973262306838e-01, 1.10267984880813580e-05}, {9.99988913658980097e-01, 1.10864024738356478e-05}, {9.99988854055660462e-01, 1.11460064560373027e-05}, {9.99988794452347932e-01, 1.12056104346863231e-05}, {9.99988734849042507e-01, 1.12652144097827095e-05}, {9.99988675245744187e-01, 1.13248183813264622e-05}, {9.99988615642452973e-01, 1.13844223493175817e-05}, {9.99988556039168863e-01, 1.14440263137560684e-05}, {9.99988496435891859e-01, 1.15036302746419228e-05}, {9.99988436832621960e-01, 1.15632342319751452e-05}, {9.99988377229359166e-01, 1.16228381857557361e-05}, {9.99988317626103478e-01, 1.16824421359836959e-05}, {9.99988258022854894e-01, 1.17420460826590250e-05}, {9.99988198419613416e-01, 1.18016500257817239e-05}, {9.99988138816379043e-01, 1.18612539653517929e-05}, {9.99988079213151775e-01, 1.19208579013692326e-05}, {9.99988019609931612e-01, 1.19804618338340432e-05}, {9.99987960006718555e-01, 1.20400657627462254e-05}, {9.99987900403512602e-01, 1.20996696881057794e-05}, {9.99987840800313755e-01, 1.21592736099127056e-05}, {9.99987781197122013e-01, 1.22188775281670047e-05}, {9.99987721593937376e-01, 1.22784814428686768e-05}, {9.99987661990759844e-01, 1.23380853540177225e-05}, {9.99987602387589418e-01, 1.23976892616141422e-05}, {9.99987542784426096e-01, 1.24572931656579363e-05}, {9.99987483181269880e-01, 1.25168970661491052e-05}, {9.99987423578120769e-01, 1.25765009630876494e-05}, {9.99987363974978763e-01, 1.26361048564735693e-05}, {9.99987304371843862e-01, 1.26957087463068653e-05}, {9.99987244768716067e-01, 1.27553126325875378e-05}, {9.99987185165595376e-01, 1.28149165153155873e-05}, {9.99987125562481791e-01, 1.28745203944910141e-05}, {9.99987065959375311e-01, 1.29341242701138188e-05}, {9.99987006356275936e-01, 1.29937281421840016e-05}, {9.99986946753183666e-01, 1.30533320107015631e-05}, {9.99986887150098501e-01, 1.31129358756665037e-05}, {9.99986827547020442e-01, 1.31725397370788238e-05}, {9.99986767943949487e-01, 1.32321435949385238e-05}, {9.99986708340885638e-01, 1.32917474492456041e-05}, {9.99986648737828894e-01, 1.33513513000000652e-05}, {9.99986589134779255e-01, 1.34109551472019075e-05}, {9.99986529531736721e-01, 1.34705589908511313e-05}, {9.99986469928701293e-01, 1.35301628309477373e-05}, {9.99986410325672969e-01, 1.35897666674917256e-05}, {9.99986350722651751e-01, 1.36493705004830969e-05}, {9.99986291119637637e-01, 1.37089743299218515e-05}, {9.99986231516630629e-01, 1.37685781558079898e-05}, {9.99986171913630726e-01, 1.38281819781415122e-05}, {9.99986112310637928e-01, 1.38877857969224192e-05}, {9.99986052707652236e-01, 1.39473896121507112e-05}, {9.99985993104673648e-01, 1.40069934238263887e-05}, {9.99985933501702166e-01, 1.40665972319494520e-05}, {9.99985873898737788e-01, 1.41262010365199015e-05}, {9.99985814295780516e-01, 1.41858048375377378e-05}, {9.99985754692830349e-01, 1.42454086350029611e-05}, {9.99985695089887287e-01, 1.43050124289155720e-05}, {9.99985635486951330e-01, 1.43646162192755709e-05}, {9.99985575884022478e-01, 1.44242200060829581e-05}, {9.99985516281100732e-01, 1.44838237893377342e-05}, {9.99985456678186090e-01, 1.45434275690398995e-05}, {9.99985397075278554e-01, 1.46030313451894545e-05}, {9.99985337472378123e-01, 1.46626351177863995e-05}, {9.99985277869484796e-01, 1.47222388868307350e-05}, {9.99985218266598575e-01, 1.47818426523224615e-05}, {9.99985158663719459e-01, 1.48414464142615793e-05}, {9.99985099060847449e-01, 1.49010501726480889e-05}, {9.99985039457982543e-01, 1.49606539274819907e-05}, {9.99984979855124742e-01, 1.50202576787632851e-05}, {9.99984920252274047e-01, 1.50798614264919725e-05}, {9.99984860649430456e-01, 1.51394651706680535e-05}, {9.99984801046593971e-01, 1.51990689112915283e-05}, },
    };
    constexpr uxx step = 8;
    #endif

    f64 ln(f64 x){
        using namespace inc;

        if (x <= 0){
            return inc::nan;
        }

        auto m      = mf64{x};
        auto sum    = m.real_exp() * ln_2;
        m.real_exp(0);

        // ln(a / b) = ln(a) - ln(b)
        // ln(x) = left:ln(x / a0 / a1 / a2 / ... / an) + right:{ln(a0) + ln(a1) + ln(a2) + ln(an)}
        // 此算法通过迭代让 left 部分等于 ln(1)
        for(uxx i = 0, shift = m.bits_of_mantissa() - step; i < sizeof(lut) / sizeof(lut[0]); i++, shift -= step){
            auto idx    = m.decimal >> shift;
            auto pair   = lut[i][idx];
            auto mdiv   = pair[0]; // 倒数乘法代替除法
            auto add    = pair[1];
            m          *= mdiv;
            sum        += add;

            // 浮点误差，理论上 m 应该始终不小于 1
            if (m < 1.0){
                break;
            }
        }

        // 由 ln'(x) = 1/x 可知 ln(1 + x) = x when x -> 1/inf 
        // 但实际上 ln(1+x) 是略小于 x 的，下方进行简单的矫正
        auto r      = sum + m - 1;
        return r;
    }
}

